# -*- coding: UTF-8 -*-
#1.1　每次处理一个字符
strin = '  python  '
numer = 1996
strs = ['my','name','is','tom']
obj = {'name':'black','age':22}
newlist = list(strin) 
print newlist

for str in range(len(strin)):
    print strin[str]

def func(e):print e
results = map(func,strin)
#1.2　字符和字符值之间的转换
print ord('p'),chr(120)
print ord(u'\u1996'),repr(unichr(1996))
print map(repr,strin)
#1.3　测试一个对象是否是类字符串
def isunicode(juststr):return isinstance(juststr,basestring)
print isunicode(strin)
print type(strin)
#1.4　字符串对齐 
print '<',strin.ljust(10),'>','<',strin.rjust(10),'>','<',strin.center(10),'>'
#1.5　去除字符串两端的空格
print '<',strin.lstrip(),'>','<',strin.rstrip(),'>','<',strin.strip(),'>'
#1.6　合并字符串
print ' '.join(strs)
print '%s %s %s %s' % (strs[0],strs[1],strs[2],strs[3])
randomstr = strin + strin
print randomstr
#1.7　将字符串逐字符或逐词反转 
strin = 'wel com to here'
strword = strin[::-1]
strword = strin.split()
strword.reverse()
strword = ' '.join(strword)
print strword
strword = ' '.join(strin.split()[::-1])
print strword

import re
strin = 'wel com to here'
strword = re.split(r'(\s+)',strin)
strword.reverse()
strword = ''.join(strword)
print strword
#1.8　检查字符串中是否包含某字符集合中的字符 
s1 = 'yanghaoming'
s2 = 'yanglinguo'
for s in s2:
    if s in s1:
        print 'true'
        break
    else:
        print 'false'
        break
#这里我将两个循环都没有循环完，提前break掉了，因为太占位置了、
import itertools
for s in itertools.ifilter(s1.__contains__,s2):
    print 'true'
    break

l1 = [1,2,3,4,5]
l2 = [2,3,4,5,6]
print set(l1).difference(l2)
print set(l2).difference(l1)

import string
notrans = string.maketrans('yang','YANG')
def A1():
    return len(s2) != len(s2.translate(notrans,s1))
def A2():
    return not s2.translate(notrans,s1)
print A1()
print A2()
#1.9　简化字符串的translate方法的使用
def trans(frm='',to='',delete='',keep=None):
    if len(to) == 1:
        to = to *len(frm)
    trans = string.maketrans(frm,to)
    if keep is not None:
        allchars = string.maketrans('','')
        delete = allchars.translate(allchars,keep.translate(allchars,delete))
    def translate(s):
        return s.translate(trans,delete)
    return translate
#keep里的保持不变delete里的会被删除frm将会指定一个类，并由to来决定该类被如何转译。
run = trans(frm=string.digits,to='*')
print run('birthday:19960912')
#1.10　过滤字符串中不属于指定集合的字符
run = trans(keep='is my')
print run('is my time')
#1.11　检查一个字符串是文本还是二进制
textmap = ''.join(map(chr,range(32,127))) + "\n\r\t\b"
nulltrans = string.maketrans("","")
def testtext(s,textmap=textmap,threshold=0.30):
    if "\0" in s:
        return False
    if not s:
        return True
    t = s.translate(nulltrans,textmap)
    return len(t)/len(s) <=threshold
print testtext('\01')
#这一段我也不知道有没有效果，完全是抄下来的，只知道大概原理。
#1.12　控制大小写 
print strin.upper(),strin.lower(),strin.title()
#1.13　访问子字符串
print strin[3:10]

import struct
sss = 'is'
new_str = len(strin) - struct.calcsize(sss)
format = '%s %ds' % (sss,new_str)
q,w,e = struct.unpack(format,strin)
print q,w.center(20),e
#1.14　改变多行文本字符串的缩进 
#1.15　扩展和压缩制表符 
#1.16　替换字符串中的子串 
#1.17　替换字符串中的子串-Python 2.4
#1.18　一次完成多个替换 
#1.19　检查字符串中的结束标记 
#1.20　使用Unicode来处理国际化文本 
#1.21　在Unicode和普通字符串之间转换 
#1.22　在标准输出中打印Unicode字符 
#1.23　对Unicode数据编码并用于XML和HTML 
#1.24　让某些字符串大小写不敏感 
#1.25　将HTML文档转化为文本显示到UNIX终端上 
#2.1　读取文件 
#2.2　写入文件 
#2.3　搜索和替换文件中的文本 
#2.4　从文件中读取指定的行 
#2.5　计算文件的行数 
#2.6　处理文件中的每个词 
#2.7　随机输入/输出
#2.8　更新随机存取文件 
#2.9　从zip文件中读取数据
#2.10　处理字符串中的zip文件 
#2.11　将文件树归档到一个压缩的tar文件 
#2.12　将二进制数据发送到Windows的标准输出 
#2.13　使用C++的类iostream语法 
#2.14　回退输入文件到起点
#2.15　用类文件对象适配真实文件对象 
#2.16　遍历目录树
#2.17　在目录树中改变文件扩展名 
#2.18　从指定的搜索路径寻找文件 
#2.19　根据指定的搜索路径和模式寻找文件 
#2.20　在Python的搜索路径中寻找文件 
#2.21　动态地改变Python搜索路径 
#2.22　计算目录间的相对路径 
#2.23　跨平台地读取无缓存的字符 
#2.24　在Mac OS X平台上统计PDF文档的页数
#2.25　在Windows平台上修改文件属性 
#2.26　从OpenOffice.org文档中提取文本
#2.27　从微软Word文档中抽取文本 
#2.28　使用跨平台的文件锁
#2.29　带版本号的文件名 
#2.30　计算CRC-64循环冗余码校验 